// // eventBus.js
// const eventBus = {};

// eventBus.eventList = {};

// eventBus.on = function(eventName, callback, context) {
//   if (!this.eventList[eventName]) {
//     this.eventList[eventName] = [];
//   }
//   this.eventList[eventName].push({ callback, context });
// };

// eventBus.off = function(eventName, callback) {
//   if (this.eventList[eventName]) {
//     if (callback) {
//       this.eventList[eventName] = this.eventList[eventName].filter(item => item.callback !== callback);
//     } else {
//       delete this.eventList[eventName];
//     }
//   }
// };

// eventBus.emit = function(eventName, data) {
//   if (this.eventList[eventName]) {
//     this.eventList[eventName].forEach(item => {
//       item.callback.call(item.context, data);
//     });
//   }
// };

// module.exports = eventBus;
const eventBus = {};

eventBus.eventList = {};

eventBus.on = function(eventName, callback) {
  if (!this.eventList[eventName]) {
    this.eventList[eventName] = [];
  }
  this.eventList[eventName].push(callback);
};

eventBus.off = function(eventName, callback) {
  if (this.eventList[eventName]) {
    this.eventList[eventName] = this.eventList[eventName].filter(cb => cb !== callback);
  }
};

eventBus.emit = function(eventName, ...args) {
  if (this.eventList[eventName]) {
    this.eventList[eventName].forEach(callback => callback(...args));
  }
};

module.exports = eventBus;